React ์๋ฒ ์ปดํฌ๋ํธ(RSC)์ ๋ถ๋ถ ๋ ๋๋ง ๊ธฐ์ , ํนํ ์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ ํ๊ตฌํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ์ต์ ํํ๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค์ธ์. ๋ ๋น ๋ฅธ ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ๊ณผ ๊ฐ์ ๋ ์ํธ์์ฉ์ ์ํ ์ ๋ต ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์.
React ์๋ฒ ์ปดํฌ๋ํธ ๋ถ๋ถ ๋ ๋๋ง: ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํ ์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ
๋์์์ด ์งํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ต์ ์ ์ฑ๋ฅ๊ณผ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. React ์๋ฒ ์ปดํฌ๋ํธ(RSC)๋ ํนํ ๋ถ๋ถ ๋ ๋๋ง ๋ฐ ์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ๊ณผ ๊ฐ์ ๊ธฐ์ ๊ณผ ๊ฒฐํฉ๋ ๋ ์ด๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ์ด ๊ธ์์๋ ์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ ์ด์ ์ ๋ง์ถฐ RSC ๋ถ๋ถ ๋ ๋๋ง์ ๋ณต์ก์ฑ์ ๊น์ด ํ๊ณ ๋ค๊ณ , ์ด๋ฌํ ์ ๋ต์ด ์ด๋ป๊ฒ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋์ง ํ๊ตฌํฉ๋๋ค.
React ์๋ฒ ์ปดํฌ๋ํธ(RSC) ์ดํดํ๊ธฐ
๋ถ๋ถ ๋ ๋๋ง์ ์ธ๋ถ ์ฌํญ์ ์ดํด๋ณด๊ธฐ ์ ์ React ์๋ฒ ์ปดํฌ๋ํธ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ํ์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ ํต์ ์ธ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ React ์ปดํฌ๋ํธ์ ๋ฌ๋ฆฌ, RSC๋ ์๋ฒ์์ ์คํ๋์ด HTML์ ์์ฑํ ํ ํด๋ผ์ด์ธํธ๋ก ์ ์กํฉ๋๋ค. ์ด๋ ๋ช ๊ฐ์ง ์ฃผ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ํด๋ผ์ด์ธํธ ์ฌ์ด๋ JavaScript ๊ฐ์: ์๋ฒ์์ ๋ ๋๋ง์ ์ํํจ์ผ๋ก์จ RSC๋ ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค์ด๋ก๋ํ๊ณ ์คํํด์ผ ํ๋ JavaScript์ ์์ ์ต์ํํ์ฌ ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ ๋จ์ถํฉ๋๋ค.
- SEO ๊ฐ์ : ๊ฒ์ ์์ง ํฌ๋กค๋ฌ๊ฐ RSC์ ์ํด ์์ฑ๋ HTML์ ์ฝ๊ฒ ์ธ๋ฑ์ฑํ ์ ์์ด ์น์ฌ์ดํธ์ ๊ฒ์ ์์ง ์ต์ ํ(SEO)๋ฅผ ํฅ์์ํต๋๋ค.
- ์ง์ ์ ์ธ ๋ฐ์ดํฐ ์ ๊ทผ: RSC๋ API ์๋ํฌ์ธํธ ์์ด ์๋ฒ์ ๋ฐ์ดํฐ ์์ค์ ์ง์ ์ ๊ทผํ ์ ์์ด ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ๋จ์ํํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
๋๊ท๋ชจ ์ปดํฌ๋ํธ์ ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ ๊ณผ์
RSC๋ ์๋ง์ ์ด์ ์ ์ ๊ณตํ์ง๋ง, ํฌ๊ฑฐ๋ ๋ณต์กํ ์ปดํฌ๋ํธ๋ฅผ ๋ค๋ฃฐ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ง์ฝ RSC๊ฐ ์๋ฒ์์ ๋ ๋๋งํ๋ ๋ฐ ์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๋ฉด, ์ ์ฒด ํ์ด์ง์ ์ด๊ธฐ ํ์๋ฅผ ์ง์ฐ์์ผ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ ๋ถ๋ถ ๋ ๋๋ง๊ณผ ์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ด ์ค์ํด์ง๋๋ค.
๋ถ๋ถ ๋ ๋๋ง: ๋ ๋๋ง ํ๋ก์ธ์ค ๋ถํดํ๊ธฐ
๋ถ๋ถ ๋ ๋๋ง์ ํฌ๊ฑฐ๋ ๋ณต์กํ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ ๋๋งํ ์ ์๋ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฒญํฌ๋ก ๋๋๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด๋ฅผ ํตํด ์๋ฒ๋ ์ ์ฒด ์ปดํฌ๋ํธ๊ฐ ์์ ํ ๋ ๋๋ง๋๊ธฐ ์ ์๋ ํ์ด์ง์ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ถ๋ถ์ ๋ํ HTML์ ํด๋ผ์ด์ธํธ๋ก ์คํธ๋ฆฌ๋ฐํ๊ธฐ ์์ํ ์ ์์ต๋๋ค. ์ด๋ ๋ ๋น ๋ฅธ "์ฒซ ๋ฐ์ดํธ๊น์ง์ ์๊ฐ"(TTFB)๊ณผ ๋ ๋น ๋ฅธ ํ์ด์ง ์ด๊ธฐ ํ์๋ก ์ด์ด์ง๋๋ค.
๋ถ๋ถ ๋ ๋๋ง์ ์ด์
- ๋ ๋น ๋ฅธ ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ: ์ฌ์ฉ์๊ฐ ์ฝํ ์ธ ๋ฅผ ๋ ๋นจ๋ฆฌ ๋ณด๊ฒ ๋์ด ๊ธ์ ์ ์ธ ์ฒซ์ธ์์ ์ค๋๋ค.
- ํฅ์๋ ์ฒด๊ฐ ์ฑ๋ฅ: ์ ์ฒด ํ์ด์ง๊ฐ ์ฆ์ ์์ ํ ๋ ๋๋ง๋์ง ์๋๋ผ๋ ์ด๊ธฐ ์ฝํ ์ธ ์ ํ์๋ ์๋์ ๋ฐ์์ฑ์ ๋ํ ์ธ์์ ๋ง๋ค์ด๋ ๋๋ค.
- ์๋ฒ ๋ถํ ๊ฐ์: ์ฝํ ์ธ ๋ฅผ ์ ์ง์ ์ผ๋ก ์คํธ๋ฆฌ๋ฐํจ์ผ๋ก์จ ์๋ฒ๋ ๋จ์ผ์ ํฐ ๋ ๋๋ง ์์ ์ผ๋ก ์ธํ ๊ณผ๋ถํ๋ฅผ ํผํ ์ ์์ต๋๋ค.
์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ: ์ฃผ์ ์ฝํ ์ธ ์ฐ์ ์์ ์ง์
์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ ์ค์ํ ์ฝํ ์ธ ๋ฅผ ํด๋ผ์ด์ธํธ์ ๋จผ์ ์คํธ๋ฆฌ๋ฐํ๋ ๊ฒ์ ์ฐ์ ์ํ์ฌ ๋ถ๋ถ ๋ ๋๋ง์ ํ ๋จ๊ณ ๋ ๋ฐ์ ์ํต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฅ ์ค์ํ ์ ๋ณด๋ ์ํธ์์ฉ ์์๊ฐ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ํ์๋์ด ์ฌ์ฉ์๊ฐ ํ์ด์ง์ ์ฐธ์ฌํ ์ ์๋ ๋ฅ๋ ฅ์ ํฅ์์ํต๋๋ค.
์ ์์๊ฑฐ๋ ์ํ ํ์ด์ง๋ฅผ ์์ํด ๋ณด์ธ์. ์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ ์ฌ์ฉํ๋ฉด ์ํ ์ด๋ฏธ์ง, ์ ๋ชฉ, ๊ฐ๊ฒฉ ํ์๋ฅผ ์ฐ์ ์์์ ๋๊ณ , ๊ณ ๊ฐ ๋ฆฌ๋ทฐ๋ ๊ด๋ จ ์ํ ์ถ์ฒ๊ณผ ๊ฐ์ด ๋ ์ค์ํ ์น์ ์ ๋ ๋๋ง์ ์ง์ฐ์ํฌ ์ ์์ต๋๋ค.
์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ ์๋ ๋ฐฉ์
- ์ค์ ์ปดํฌ๋ํธ ์๋ณ: ์ฌ์ฉ์๊ฐ ์ฆ์ ๋ณด๊ณ ์ํธ์์ฉํ๋ ๋ฐ ํ์์ ์ธ ์ปดํฌ๋ํธ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- Suspense๋ก ์คํธ๋ฆฌ๋ฐ ๊ตฌํ: React Suspense๋ฅผ ํ์ฉํ์ฌ ๋ ์ค์ํ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ธ๊ณ , ๋์ค์ ๋ ๋๋ง๋๊ณ ์คํธ๋ฆฌ๋ฐ๋ ์ ์์์ ๋ํ๋ ๋๋ค.
- ์๋ฒ ๋ ๋๋ง ์ฐ์ ์์ ์ง์ : ์๋ฒ๊ฐ ์ค์ ์ปดํฌ๋ํธ๋ฅผ ๋จผ์ ๋ ๋๋งํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ฝํ ์ธ ์ ์ง์ ์คํธ๋ฆฌ๋ฐ: ์๋ฒ๋ ์ค์ ์ปดํฌ๋ํธ์ ๋ํ HTML์ ํด๋ผ์ด์ธํธ๋ก ์คํธ๋ฆฌ๋ฐํ ๋ค์, ๋ ์ค์ํ ์ปดํฌ๋ํธ๊ฐ ์ค๋น๋๋ ๋๋ก ํด๋น HTML์ ์คํธ๋ฆฌ๋ฐํฉ๋๋ค.
React Suspense๋ฅผ ์ด์ฉํ ์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ ๊ตฌํ
React Suspense๋ ๋น๋๊ธฐ ์์ ๋ฐ ์ปดํฌ๋ํธ ์ง์ฐ ๋ก๋ฉ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ๋ ๋๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์๋ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ธ๊ณ , ์ปดํฌ๋ํธ๊ฐ ์ค๋น๋๋ ๋์ ๋์ฒด UI(์: ๋ก๋ฉ ์คํผ๋)๋ฅผ ํ์ํ ์ ์์ต๋๋ค. RSC์ ๊ฒฐํฉํ๋ฉด Suspense๋ ์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
์์: ์ ์์๊ฑฐ๋ ์ํ ํ์ด์ง
์ ์์๊ฑฐ๋ ์ํ ํ์ด์ง์ ๋จ์ํ๋ ์์๋ก ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ปดํฌ๋ํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค:
ProductImage: ์ํ ์ด๋ฏธ์ง๋ฅผ ํ์ํฉ๋๋ค.ProductTitle: ์ํ ์ ๋ชฉ์ ํ์ํฉ๋๋ค.ProductPrice: ์ํ ๊ฐ๊ฒฉ์ ํ์ํฉ๋๋ค.ProductDescription: ์ํ ์ค๋ช ์ ํ์ํฉ๋๋ค.CustomerReviews: ๊ณ ๊ฐ ๋ฆฌ๋ทฐ๋ฅผ ํ์ํฉ๋๋ค.
์ด ์๋๋ฆฌ์ค์์ ProductImage, ProductTitle, ProductPrice๋ ์ค์ ์ปดํฌ๋ํธ๋ก ๊ฐ์ฃผ๋๋ฉฐ, ProductDescription๊ณผ CustomerReviews๋ ๋ ์ค์ํ์ฌ ๋์ค์ ์คํธ๋ฆฌ๋ฐ๋ ์ ์์ต๋๋ค.
React Suspense๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
// ProductPage.jsx (์๋ฒ ์ปดํฌ๋ํธ)
import { Suspense } from 'react';
import ProductImage from './ProductImage';
import ProductTitle from './ProductTitle';
import ProductPrice from './ProductPrice';
import ProductDescription from './ProductDescription';
import CustomerReviews from './CustomerReviews';
export default async function ProductPage({ productId }) {
// ์ํ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ์๋ฎฌ๋ ์ด์
(๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์์)
const product = await fetchProductData(productId);
return (
<div>
<ProductImage src={product.imageUrl} alt={product.name} />
<ProductTitle title={product.name} />
<ProductPrice price={product.price} />
<Suspense fallback={<p>์ค๋ช
๋ก๋ฉ ์ค...</p>}>
<ProductDescription description={product.description} />
</Suspense>
<Suspense fallback={<p>๋ฆฌ๋ทฐ ๋ก๋ฉ ์ค...</p>}>
<CustomerReviews productId={productId} />
</Suspense>
</div>
);
}
์ด ์์ ์์ `ProductDescription`๊ณผ `CustomerReviews` ์ปดํฌ๋ํธ๋ `<Suspense>` ์ปดํฌ๋ํธ๋ก ๊ฐ์ธ์ฌ ์์ต๋๋ค. ์ด ์ปดํฌ๋ํธ๋ค์ด ์๋ฒ์์ ๋ ๋๋ง๋๋ ๋์, ๋์ฒด UI(<p>๋ก๋ฉ ์ค...</p> ์์)๊ฐ ํ์๋ฉ๋๋ค. ์ปดํฌ๋ํธ๊ฐ ์ค๋น๋๋ฉด, ํด๋น HTML์ด ํด๋ผ์ด์ธํธ๋ก ์คํธ๋ฆฌ๋ฐ๋์ด ๋์ฒด UI๋ฅผ ๋์ฒดํ๊ฒ ๋ฉ๋๋ค.
์ฐธ๊ณ : ์ด ์์ ๋ ์๋ฒ ์ปดํฌ๋ํธ ๋ด์์ `async/await`๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ๋จ์ํํ๊ณ ์ฝ๋ ๊ฐ๋ ์ฑ์ ํฅ์์ํต๋๋ค.
์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ ์ด์
- ํฅ์๋ ์ฒด๊ฐ ์ฑ๋ฅ: ์ค์ ์ฝํ ์ธ ๋ฅผ ์ฐ์ ์์์ ๋ ์ผ๋ก์จ, ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ์์ ํ ๋ ๋๋ง๋๊ธฐ ์ ์๋ ์ฌ์ฉ์๊ฐ ํ์ด์ง์ ๋ ๋นจ๋ฆฌ ์ํธ์์ฉ์ ์์ํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ์ฐธ์ฌ๋ ํฅ์: ๋ ๋น ๋ฅธ ์ด๊ธฐ ํ์๋ ์ฌ์ฉ์๊ฐ ํ์ด์ง์ ๋จธ๋ฌผ๋ฉฐ ์ฝํ ์ธ ๋ฅผ ํ์ํ๋๋ก ์ ๋ํฉ๋๋ค.
- ์ต์ ํ๋ ๋ฆฌ์์ค ํ์ฉ: ์ฝํ ์ธ ๋ฅผ ์ ์ง์ ์ผ๋ก ์คํธ๋ฆฌ๋ฐํ๋ฉด ์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ชจ๋์ ๋ถํ๋ฅผ ์ค์ฌ ์ ๋ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
- ๋๋ฆฐ ์ฐ๊ฒฐ ํ๊ฒฝ์์์ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ: ๋๋ฆฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ์์๋ ์ฌ์ฉ์๋ ํ์ ์ฝํ ์ธ ๋ฅผ ์ ์ํ๊ฒ ๋ณด๊ณ ์ํธ์์ฉํ ์ ์์ด ๊ฒฝํ์ ๋ ๊ฒฌ๋ ๋งํ๊ฒ ๋ง๋ญ๋๋ค.
๊ณ ๋ ค์ฌํญ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ ์๋นํ ์ด์ ์ ์ ๊ณตํ์ง๋ง, ๋ค์ ์ฌํญ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ์ ์คํ ์ปดํฌ๋ํธ ์ฐ์ ์์ ์ง์ : ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ฅ ์ค์ํ ์ปดํฌ๋ํธ๋ฅผ ์ ํํ๊ฒ ์๋ณํด์ผ ํฉ๋๋ค. ์๋ชป๋ ์ปดํฌ๋ํธ๋ฅผ ์ฐ์ ์์์ ๋๋ฉด ์คํธ๋ฆฌ๋ฐ์ ์ด์ ์ด ์์๋ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ํ๋ ๋ฐ ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ๊ณ ๋ คํ์ฌ ๊ฒฐ์ ์ ๋ด๋ฆฌ์ธ์. ์๋ฅผ ๋ค์ด, ๋ด์ค ์น์ฌ์ดํธ์์๋ ๊ธฐ์ฌ ์ ๋ชฉ๊ณผ ์ฒซ ๋ฌธ๋จ์ด ๋๊ธ ์น์ ๋ณด๋ค ๋ ์ค์ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
- ํจ๊ณผ์ ์ธ ๋์ฒด UI: ๋์ฒด UI๋ ์ ์ตํ๊ณ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ด์ด์ผ ํ๋ฉฐ, ์ฌ์ฉ์์๊ฒ ์ฝํ ์ธ ๊ฐ ๋ก๋ฉ ์ค์ด๋ผ๋ ๋ช ํํ ํ์๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๋ก๋ฉ ์คํผ๋๋ฅผ ํผํ๊ณ , ๋์ ์ต์ข ์ ์ผ๋ก ํ์๋ ์ฝํ ์ธ ์ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ฐฉํ๋ ํ๋ ์ด์คํ๋๋ฅผ ์ฌ์ฉํ์ธ์. ๋ ํ๋์ ์ด๊ณ ๋งค๋ ฅ์ ์ธ ๊ฒฝํ์ ์ํด ์ฌ๋จธ ํจ๊ณผ๋ ์ค์ผ๋ ํค ๋ก๋ ์ฌ์ฉ์ ๊ณ ๋ คํด ๋ณด์ธ์.
- ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ฌ ์ ์ฌ์ ์ธ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ์คํธ๋ฆฌ๋ฐ ์ ๋ต์ ์ต์ ํํ์ธ์. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ์ ์๋ฒ ์ธก ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ TTFB, ์ฒซ ์ฝํ ์ธ ํ์ธํธ(FCP), ์ต๋ ์ฝํ ์ธ ํ์ธํธ(LCP)์ ๊ฐ์ ์งํ๋ฅผ ์ถ์ ํ์ธ์.
- ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์์ ํ ์คํธ: ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด(์: ๋๋ฆฐ 3G, ๋น ๋ฅธ ๊ด๋์ญ)์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ์ฌ ์คํธ๋ฆฌ๋ฐ ์ ๋ต์ด ๋ชจ๋ ์๋๋ฆฌ์ค์์ ํจ๊ณผ์ ์ผ๋ก ์๋ํ๋์ง ํ์ธํ์ธ์. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ๋คํธ์ํฌ ์๋์ ์ง์ฐ ์๊ฐ์ ์๋ฎฌ๋ ์ด์ ํ์ธ์.
- ํ์ด๋๋ ์ด์ ๊ณ ๋ ค์ฌํญ: ์๋ฒ ๋ ๋๋ง ์ฝํ ์ธ ๋ฅผ ์คํธ๋ฆฌ๋ฐํ ๋, ํด๋ผ์ด์ธํธ ์ธก ํ์ด๋๋ ์ด์ ํ๋ก์ธ์ค๊ฐ ํจ์จ์ ์ธ์ง ํ์ธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ถํ์ํ ์ฌ๋ ๋๋ง์ ํผํ๊ณ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ์ต์ ํํ์ฌ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ์ธ์. React์ ํ๋กํ์ผ๋ฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด๋๋ ์ด์ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ํด๊ฒฐํ์ธ์.
๋๊ตฌ ๋ฐ ๊ธฐ์
- React Suspense: ์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ ๊ตฌํํ๊ธฐ ์ํ ํต์ฌ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
- Next.js: ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ๋ฐ ์คํธ๋ฆฌ๋ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ ์ธ๊ธฐ ์๋ React ํ๋ ์์ํฌ์ ๋๋ค. Next.js๋ RSC ๊ตฌํ์ ๋จ์ํํ๊ณ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ์ ํธ๋ฆฌํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Remix: ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ๊ธฐ๋ฅ์ ๊ฐ์ถ ๋ ๋ค๋ฅธ React ํ๋ ์์ํฌ๋ก, Next.js์๋ ๋ค๋ฅธ ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ๋ผ์ฐํ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. Remix๋ ์น ํ์ค์ ๊ฐ์กฐํ๋ฉฐ ์ ์ง์ ํฅ์์ ๋ํ ํ๋ฅญํ ์ง์์ ์ ๊ณตํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ: ๋คํธ์ํฌ ์ฑ๋ฅ์ ๋ถ์ํ๊ณ ๋ ๋๋ง ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
- ์๋ฒ ์ธก ๋ชจ๋ํฐ๋ง ๋๊ตฌ: New Relic, Datadog, Sentry์ ๊ฐ์ ๋๊ตฌ๋ ์๋ฒ ์ธก ์ฑ๋ฅ์ ๋ํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ๊ณ ์คํธ๋ฆฌ๋ฐ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๋ฌธ์ ๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
์ค์ ์ฌ๋ก ๋ฐ ์ผ์ด์ค ์คํฐ๋
๋ช๋ช ํ์ฌ๋ค์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด RSC์ ์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ ์ฑ๊ณต์ ์ผ๋ก ๊ตฌํํ์ต๋๋ค. ๊ตฌ์ฒด์ ์ธ ์ธ๋ถ ์ ๋ณด๋ ์ข ์ข ๊ธฐ๋ฐ์ด์ง๋ง, ์ผ๋ฐ์ ์ธ ์ด์ ์ ๋๋ฆฌ ์๋ ค์ ธ ์์ต๋๋ค.
- ์ ์์๊ฑฐ๋ ํ๋ซํผ: ์ ์์๊ฑฐ๋ ์ฌ์ดํธ๋ค์ ์ํ ์ ๋ณด ํ์๋ฅผ ์ฐ์ ์์์ ๋๊ณ ๋ ์ค์ํ ์์์ ๋ ๋๋ง์ ์ง์ฐ์ํด์ผ๋ก์จ ํ์ด์ง ๋ก๋ฉ ์๊ฐ๊ณผ ์ ํ์จ์์ ์๋นํ ๊ฐ์ ์ ๋ณด์์ต๋๋ค. ์ ๋ฝ์ ํ ์ฃผ์ ์จ๋ผ์ธ ์๋งค์ ์ฒด๋ ์ ์ฌํ ์ ๋ต์ ๊ตฌํํ ํ ์ ํ์จ์ด 15% ์ฆ๊ฐํ๋ค๊ณ ๋ณด๊ณ ํ์ต๋๋ค.
- ๋ด์ค ์น์ฌ์ดํธ: ๋ด์ค ๊ธฐ๊ด๋ค์ ๊ด๋ จ ๊ธฐ์ฌ๋ ๊ด๊ณ ๋ฅผ ๋ก๋ํ๊ธฐ ์ ์ ๊ธฐ์ฌ ์ ๋ชฉ๊ณผ ์ฝํ ์ธ ๋ฅผ ์คํธ๋ฆฌ๋ฐํจ์ผ๋ก์จ ์๋ณด๋ฅผ ๋ ๋นจ๋ฆฌ ์ ๋ฌํ ์ ์๊ฒ ๋์์ต๋๋ค. ์์์์ ํ ์ ๋์ ์ธ ๋ด์ค ๋งค์ฒด๋ ์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ ์ฑํํ ํ ์ดํ๋ฅ ์ด 20% ๊ฐ์ํ๋ค๊ณ ๋ณด๊ณ ํ์ต๋๋ค.
- ์์ ๋ฏธ๋์ด ํ๋ซํผ: ์์ ๋ฏธ๋์ด ์ฌ์ดํธ๋ค์ ์ฃผ ์ฝํ ์ธ ํผ๋ ํ์๋ฅผ ์ฐ์ ์์์ ๋๊ณ ์ฌ์ด๋๋ฐ ์์๋ ๋๊ธ ์น์ ์ ๋ก๋ฉ์ ์ง์ฐ์ํด์ผ๋ก์จ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ์ต๋๋ค. ๋ถ๋ฏธ์ ํ ๋ํ ์์ ๋ฏธ๋์ด ํ์ฌ๋ ์ด ์ ๊ทผ ๋ฐฉ์์ ๊ตฌํํ ํ ์ฌ์ฉ์ ์ฐธ์ฌ๋๊ฐ 10% ์ฆ๊ฐํ ๊ฒ์ ํ์ธํ์ต๋๋ค.
๊ฒฐ๋ก
React ์๋ฒ ์ปดํฌ๋ํธ ๋ถ๋ถ ๋ ๋๋ง, ํนํ ์ ํ์ ์ปดํฌ๋ํธ ์คํธ๋ฆฌ๋ฐ์ ํ์ฉํ ๋, ์ด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ์ต์ ํ์์ ์๋นํ ๋ฐ์ ์ ์๋ฏธํฉ๋๋ค. ์ค์ ์ฝํ ์ธ ๋ฅผ ์ฐ์ ์์์ ๋๊ณ ํด๋ผ์ด์ธํธ์ ์ ์ง์ ์ผ๋ก ์คํธ๋ฆฌ๋ฐํจ์ผ๋ก์จ ๋ ๋น ๋ฅด๊ณ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๊ตฌํ์๋ ์ ์คํ ๊ณํ๊ณผ ๊ณ ๋ ค๊ฐ ํ์ํ์ง๋ง, ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๋ง์กฑ๋ ์ธก๋ฉด์์์ ์ด์ ์ ๊ทธ๋งํ ๊ฐ์น๊ฐ ์์ต๋๋ค. React ์ํ๊ณ๊ฐ ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ, RSC์ ์คํธ๋ฆฌ๋ฐ ๊ธฐ์ ์ ์ ์ธ๊ณ ์ฌ์ฉ์์ ์๊ตฌ๋ฅผ ์ถฉ์กฑํ๋ ๊ณ ์ฑ๋ฅ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ํ์ ๋๊ตฌ๊ฐ ๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ์ ๋ต์ ์ฑํํจ์ผ๋ก์จ ๋ ๋น ๋ฅด๊ณ ๋ฐ์์ฑ์ด ์ข์ ๋ฟ๋ง ์๋๋ผ ์ ์ธ๊ณ ์ฌ์ฉ์๊ฐ ๋ ์ฝ๊ฒ ์ ๊ทผํ๊ณ ์ฐธ์ฌํ ์ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.